// types/request.d.ts

interface RequestOptions {
  url: string
  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' // 请求方法
  data?: never // 请求数据
  header?: Record<string, string> // 请求头
}

import type { ApiResponse } from '@/common/requestType'
// utils/request.ts

const BASE_URL: string = 'https://sqapi2.dishawang.com/api/v1' // 你的基础URL

// export default function request<T>里的T指的是ResponseData里的data的数据类型
export default function request<T>(
  options: RequestOptions
): Promise<ApiResponse<T>> {
  return new Promise((resolve, reject) => {
    // uni.showLoading({
    //   title: '加载中',
    //   mask: false,
    //   image: '@/static/loading2.gif'
    // })

    uni.request({
      url: BASE_URL + options.url, // 拼接基础URL和请求URL
      method: options.method || 'GET', // 默认请求方法为GET
      data: options.data || {}, // 默认请求数据为空对象
      header: options.header || {
        'Content-Type': 'application/json',
        token: uni.getStorageSync('token') || '' // 默认请求头带上token
      }, // 默认请求头
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.data as ApiResponse<T>) // 请求成功，返回数据
        } else {
          reject(new Error(`请求失败，状态码：${res.statusCode}`)) // 请求失败，返回错误信息
        }
      },
      fail: (err) => {
        console.error(err)
        /* uni.showToast({
                                                                                                                                                  title: err.errMsg || '请求失败',
                                                                                                                                                  icon: 'none'
                                                                                                                                                })*/
        reject(err) // 请求失败，返回错误信息
      },
      complete: () => {
        uni.hideLoading() // 隐藏loading
      } // 请求完成
    })
  })
}
